import tool from "@/utils/tool";
import form from "@/components/Form";

export const attrValueEditCols = [
    {name:'image', title:'封面图'},
    {name:'cost_price', title:'成本价'},
    {name:'ot_price', title:'市场价'},
    {name:'price', title:'售价'},
    {name:'stock_num', title:'库存'},
    // {name:'weight', title:'重量'},
    // {name:'volume', title:'体积'},
    {name:'bar_code', title:'编号'},
]

export const makeAttrValues = (attrs:any[]) => {
    let paStr = JSON.stringify(attrs)
    attrs = JSON.parse(paStr)

    let table = []     //  将规格值存入数组

    for(let vo of attrs){

        if(vo.values.length < 1){   // 如果规格值为空，则不生成这个规格
            continue
        }

        if(tool.isEmpty(table)){   // 表格的第一行，直接插入数据
            for(let voo of vo.values){ // 当前规格的值
                let row: any = {}
                row.sku = [voo] // 将第一个规格值，以数组的形式存入字段sku中
                table.push(row)
            }

        }else{ // 此时table不为空，从第二行开始的写入规则

            // 新表格的行
            let rows = []

            // 循环取出table中的每一行数据
            for(let tr of table){

                // 将行数据转为字符串，消除引用
                let trStr = JSON.stringify(tr)
                for(let voo of vo.values){

                    // 将当前行按照规格值值进行拆分，形成多行，存入rows中，替换掉当前行
                    let row = JSON.parse(trStr)
                    // 对当前行的sku追加新的规格值
                    row.sku.push(voo)
                    // 将新的行存入rows中
                    rows.push(row)
                }
            }

            // 用rows取代原来的table
            table = rows

        }

    }

    // 对形成的table进行再处理，在每行加入可以编辑的区域

    let lastTable:any[] = []
    const editKeys: any = {}
    for(let vo of attrValueEditCols){
        editKeys[vo.name] = ''
    }
    table.forEach((vo, index, arr) => {
        lastTable.push(Object.assign(vo, editKeys))
    })

    return lastTable
}